package middleware

import (
	"ci-control-backend/common/httpx"
	"github.com/pkg/errors"
)

// UserAuth 验证用户权限
func UserAuth(c *httpx.Context) error {
	_, err := c.GetLoginUserid()
	if err != nil { // 未通过session验证，需要进行token验证
		// err不为空，通过token找用户
		user, err := c.Token.GetLoginUser()
		if err != nil {
			// 未通过token认证
			return err
		}

		// 通过token验证，保存状态到session
		c.SetLoginUserid(user.ID)
		c.SetLoginUser(user)
	}
	return nil
}

// AdminAuth 验证管理员权限
func AdminAuth(c *httpx.Context) error {
	user, err := c.GetLoginUser()
	if err != nil { // 未通过session验证，需要进行token验证
		user, err = c.Token.GetLoginUser()
		if err != nil {
			// 未通过token认证
			return err
		}

		// 通过token验证，保存状态到session
		c.SetLoginUserid(user.ID)
		c.SetLoginUser(user)
	}
	// 仅限id = 1
	if user.ID != 1 {
		// 未通过角色验证
		return errors.New("你没有权限操作")
	}

	return nil
}
